home *** CD-ROM | disk | FTP | other *** search
/ Champak 62 / Volume 62 - JOGO DISK .iso / Games / penguin_dinner.swf / scripts / __Packages / classes / game / Guest.as < prev    next >
Text File  |  2008-03-17  |  15KB  |  432 lines

  1. class classes.game.Guest extends MovieClip
  2. {
  3.    static var highlightColor = 39168;
  4.    var locked = false;
  5.    var selected = false;
  6.    var atTable = false;
  7.    var mood = 3;
  8.    var worstMood = 3;
  9.    var paused = false;
  10.    static var EVENT_LEAVE_QUEUE = "event_leave_queue";
  11.    static var EVENT_LEAVE_SCREEN = "event_leave_screen";
  12.    static var STATE_GOING_TO_QUEUE_PLACE = "going_to_queue_place";
  13.    static var STATE_WAITING_IN_QUEUE = "waiting_in_queue";
  14.    static var STATE_GOING_TO_TABLE = "state_going_to_table";
  15.    static var STATE_READING_MENU = "reading_menu";
  16.    static var STATE_WAITING_FOR_WAITER = "waiting_for_waiter";
  17.    static var STATE_WAITING_FOR_FOOD = "waiting_for_food";
  18.    static var STATE_WAITING_FRIEND_EATING = "waiting_friend_eating";
  19.    static var STATE_EATING = "eating";
  20.    static var STATE_LEAVING = "leaving";
  21.    static var STATE_WALKING = "walking";
  22.    function Guest()
  23.    {
  24.       super();
  25.       this.food = classes.game.Food.randomFood();
  26.       com.gskinner.events.GDispatcher.initialize(this);
  27.       this.queue = new classes.game.CharActionQueue();
  28.       var _loc3_ = [[0,1,2,3,4,5,6],[7,8,9,10,11],[12,13,14,15,16]];
  29.       var _loc4_ = classes.core.SOManager.getInstance().__get__currentStage();
  30.       var _loc5_ = _loc3_[_loc4_][Math.floor(Math.random() * _loc3_[_loc4_].length)];
  31.       this.clothes = "clothes_" + _loc5_;
  32.       this.state = classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE;
  33.    }
  34.    function setup($friend, $currentTile, $placeTile, $firstInQueue)
  35.    {
  36.       this.firstInQueue = $firstInQueue;
  37.       if(this.firstInQueue)
  38.       {
  39.          this.enableMouseActions();
  40.       }
  41.       this.friend = $friend;
  42.       this.currentTile = $currentTile;
  43.       this.moveTo($placeTile.x,$placeTile.y);
  44.    }
  45.    function moveTo(tileX, tileY)
  46.    {
  47.       this.queue.setTargetTile(this.currentTile,new classes.math.Tile(tileX,tileY,0,0,0),this.speed);
  48.       this.currentTile.x = tileX;
  49.       this.currentTile.y = tileY;
  50.    }
  51.    function shiftInQueue($firstInQueue)
  52.    {
  53.       this.firstInQueue = $firstInQueue;
  54.       if(this.firstInQueue)
  55.       {
  56.          this.enableMouseActions();
  57.       }
  58.       this.moveTo(this.currentTile.x + 2,this.currentTile.y);
  59.       this.state = classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE;
  60.       this.setState();
  61.    }
  62.    function makeOrder()
  63.    {
  64.       this.mood = 3;
  65.       this.moodCount = 0;
  66.       this.state = classes.game.Guest.STATE_WAITING_FOR_FOOD;
  67.       this.setState();
  68.       this.bubble.gotoAndStop(this.food);
  69.       if(this.table.guests[0] == this)
  70.       {
  71.          this.bubble._xscale = -100;
  72.       }
  73.    }
  74.    function startEating()
  75.    {
  76.       this.mood = 3;
  77.       this.stateCount = 0;
  78.       this.state = classes.game.Guest.STATE_EATING;
  79.       this.setState();
  80.    }
  81.    function moveToTable($table)
  82.    {
  83.       this.disableMouseActions();
  84.       this.filters = [];
  85.       this.table = $table;
  86.       this.table.setGuests(classes.game.Guest.selectedGuests);
  87.       var _loc2_ = this.table.guests[0] != this ? this.table.tileLeftPlace : this.table.tileRightPlace;
  88.       this.moveTo(_loc2_.x,_loc2_.y);
  89.       this.state = classes.game.Guest.STATE_GOING_TO_TABLE;
  90.    }
  91.    function update()
  92.    {
  93.       switch(this.state)
  94.       {
  95.          case classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE:
  96.             if(this.setWalkingState())
  97.             {
  98.                this.moodCount = 0;
  99.                this.state = classes.game.Guest.STATE_WAITING_IN_QUEUE;
  100.                this.setState();
  101.             }
  102.             break;
  103.          case classes.game.Guest.STATE_WAITING_IN_QUEUE:
  104.             if(this.firstInQueue)
  105.             {
  106.                this.moodCount = this.moodCount + 1;
  107.                if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
  108.                {
  109.                   this.moodCount = 0;
  110.                   this.worsenMood();
  111.                   if(this.mood > 0)
  112.                   {
  113.                      this.setState();
  114.                   }
  115.                   else
  116.                   {
  117.                      this.disableMouseActions();
  118.                      this.dispatchEvent(new classes.events.WidgetEvent(this,classes.game.Guest.EVENT_LEAVE_QUEUE));
  119.                      this.deactivate();
  120.                      this.moveTo(0,3);
  121.                      this.state = classes.game.Guest.STATE_LEAVING;
  122.                   }
  123.                }
  124.             }
  125.             break;
  126.          case classes.game.Guest.STATE_GOING_TO_TABLE:
  127.             if(this.setWalkingState())
  128.             {
  129.                this.enableMouseActions();
  130.                this.stateCount = 0;
  131.                this.atTable = true;
  132.                if(this.table.guests[0] == this)
  133.                {
  134.                   this._xscale = -100;
  135.                }
  136.                this.state = classes.game.Guest.STATE_READING_MENU;
  137.                this.setState();
  138.             }
  139.             break;
  140.          case classes.game.Guest.STATE_READING_MENU:
  141.             this.stateCount = this.stateCount + 1;
  142.             if(this.stateCount >= classes.game.GameData.__get__GUEST_READING_MENU_TIME())
  143.             {
  144.                this.mood = 3;
  145.                this.moodCount = 0;
  146.                this.state = classes.game.Guest.STATE_WAITING_FOR_WAITER;
  147.                this.setState();
  148.                if(this.friend.state == classes.game.Guest.STATE_READING_MENU)
  149.                {
  150.                   classes.core.SoundManager.getInstance().startSound("hello");
  151.                   this.friend.mood = 3;
  152.                   this.friend.moodCount = 0;
  153.                   this.friend.state = classes.game.Guest.STATE_WAITING_FOR_WAITER;
  154.                   this.friend.setState();
  155.                }
  156.                if(!this.friend)
  157.                {
  158.                   classes.core.SoundManager.getInstance().startSound("hello");
  159.                }
  160.             }
  161.             break;
  162.          case classes.game.Guest.STATE_WAITING_FOR_WAITER:
  163.             this.moodCount = this.moodCount + 1;
  164.             if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
  165.             {
  166.                this.moodCount = 0;
  167.                this.worsenMood();
  168.                if(this.mood > 0)
  169.                {
  170.                   this.setState();
  171.                }
  172.                else
  173.                {
  174.                   this.table.setGuests();
  175.                   this._xscale = 100;
  176.                   this.atTable = false;
  177.                   this.moveTo(31,5);
  178.                   this.state = classes.game.Guest.STATE_LEAVING;
  179.                   if(this.friend.state == classes.game.Guest.STATE_WAITING_FOR_WAITER)
  180.                   {
  181.                      this.friend._xscale = 100;
  182.                      this.friend.atTable = false;
  183.                      this.friend.moveTo(31,7);
  184.                      this.friend.state = classes.game.Guest.STATE_LEAVING;
  185.                   }
  186.                }
  187.             }
  188.             break;
  189.          case classes.game.Guest.STATE_WAITING_FOR_FOOD:
  190.             this.moodCount = this.moodCount + 1;
  191.             if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
  192.             {
  193.                this.moodCount = 0;
  194.                this.worsenMood();
  195.                if(this.mood > 0)
  196.                {
  197.                   this.setState();
  198.                }
  199.                else if(this.friend)
  200.                {
  201.                   this.mood = 1;
  202.                   this.table.showMoney();
  203.                   this.state = classes.game.Guest.STATE_WAITING_FRIEND_EATING;
  204.                   this.setState();
  205.                }
  206.                else
  207.                {
  208.                   this._xscale = 100;
  209.                   this.atTable = false;
  210.                   this.moveTo(31,6);
  211.                   this.state = classes.game.Guest.STATE_LEAVING;
  212.                   this.table.setGuests();
  213.                }
  214.             }
  215.             break;
  216.          case classes.game.Guest.STATE_EATING:
  217.             this.stateCount = this.stateCount + 1;
  218.             if(this.stateCount >= classes.game.GameData.__get__GUEST_EATING_TIME())
  219.             {
  220.                this.table.guestFinishedEating(this,this.worstMood);
  221.                if(this.friend)
  222.                {
  223.                   this.state = classes.game.Guest.STATE_WAITING_FRIEND_EATING;
  224.                   this.setState();
  225.                }
  226.                else
  227.                {
  228.                   this.disableMouseActions();
  229.                   this._xscale = 100;
  230.                   this.atTable = false;
  231.                   this.moveTo(31,6);
  232.                   this.state = classes.game.Guest.STATE_LEAVING;
  233.                   this.table.setGuests();
  234.                }
  235.             }
  236.             break;
  237.          case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
  238.             if(this.friend.state == classes.game.Guest.STATE_WAITING_FRIEND_EATING)
  239.             {
  240.                this.disableMouseActions();
  241.                this._xscale = 100;
  242.                this.atTable = false;
  243.                this.moveTo(31,5);
  244.                this.state = classes.game.Guest.STATE_LEAVING;
  245.                this.friend.disableMouseActions();
  246.                this.friend._xscale = 100;
  247.                this.friend.atTable = false;
  248.                this.friend.moveTo(31,7);
  249.                this.friend.state = classes.game.Guest.STATE_LEAVING;
  250.                this.table.setGuests();
  251.             }
  252.             break;
  253.          case classes.game.Guest.STATE_LEAVING:
  254.             if(this.setWalkingState())
  255.             {
  256.                this.dispatchEvent(new classes.events.WidgetEvent(this,classes.game.Guest.EVENT_LEAVE_SCREEN));
  257.                this.removeMovieClip();
  258.             }
  259.       }
  260.    }
  261.    function worsenMood()
  262.    {
  263.       this.mood = this.mood - 1;
  264.       if(this.mood < this.worstMood)
  265.       {
  266.          this.worstMood = this.mood;
  267.       }
  268.    }
  269.    function enableMouseActions()
  270.    {
  271.       this.onRollOver = this.activate;
  272.       this.onPress = this.mousePressHandler;
  273.       this.onRollOut = this.onDragOut = this.onReleaseOutside = this.deactivate;
  274.    }
  275.    function disableMouseActions()
  276.    {
  277.       delete this.onRollOver;
  278.       delete this.onRelease;
  279.       delete this.onRollOut;
  280.       delete this.onDragOut;
  281.       delete this.onReleaseOutside;
  282.    }
  283.    function activate()
  284.    {
  285.       if(this.locked || this.paused)
  286.       {
  287.          return undefined;
  288.       }
  289.       switch(this.state)
  290.       {
  291.          case classes.game.Guest.STATE_WAITING_IN_QUEUE:
  292.          case classes.game.Guest.STATE_READING_MENU:
  293.          case classes.game.Guest.STATE_WAITING_FOR_WAITER:
  294.          case classes.game.Guest.STATE_WAITING_FOR_FOOD:
  295.          case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
  296.          case classes.game.Guest.STATE_EATING:
  297.             this.friend.filters = _loc0_ = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
  298.             this.filters = _loc0_;
  299.       }
  300.    }
  301.    function mousePressHandler()
  302.    {
  303.       if(this.locked || this.paused)
  304.       {
  305.          return undefined;
  306.       }
  307.       switch(this.state)
  308.       {
  309.          case classes.game.Guest.STATE_WAITING_IN_QUEUE:
  310.             if(!this.selected)
  311.             {
  312.                classes.core.SoundManager.getInstance().startSound("click_penguin");
  313.                this.selected = true;
  314.                this.filters = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
  315.                classes.game.Guest.selectedGuests.push(this);
  316.                if(this.friend)
  317.                {
  318.                   this.friend.selected = true;
  319.                   this.friend.filters = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
  320.                   classes.game.Guest.selectedGuests.push(this.friend);
  321.                }
  322.             }
  323.             break;
  324.          case classes.game.Guest.STATE_READING_MENU:
  325.          case classes.game.Guest.STATE_WAITING_FOR_WAITER:
  326.          case classes.game.Guest.STATE_WAITING_FOR_FOOD:
  327.          case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
  328.          case classes.game.Guest.STATE_EATING:
  329.             this.table.onPress();
  330.       }
  331.    }
  332.    function deactivate()
  333.    {
  334.       if(this.locked || this.paused)
  335.       {
  336.          return undefined;
  337.       }
  338.       switch(this.state)
  339.       {
  340.          case classes.game.Guest.STATE_WAITING_IN_QUEUE:
  341.             if(!this.selected)
  342.             {
  343.                this.friend.filters = _loc0_ = [];
  344.                this.filters = _loc0_;
  345.             }
  346.             break;
  347.          case classes.game.Guest.STATE_READING_MENU:
  348.          case classes.game.Guest.STATE_WAITING_FOR_WAITER:
  349.          case classes.game.Guest.STATE_WAITING_FOR_FOOD:
  350.          case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
  351.          case classes.game.Guest.STATE_EATING:
  352.             this.friend.filters = _loc0_ = [];
  353.             this.filters = _loc0_;
  354.       }
  355.    }
  356.    function pause()
  357.    {
  358.       this.paused = true;
  359.       this.useHandCursor = false;
  360.       if(this.state == classes.game.Guest.STATE_LEAVING || this.state == classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE || this.state == classes.game.Guest.STATE_GOING_TO_TABLE)
  361.       {
  362.          this[this.lastStateFullName].stop();
  363.       }
  364.    }
  365.    function unpause()
  366.    {
  367.       this.paused = false;
  368.       this.useHandCursor = true;
  369.       var _loc2_ = this[this.lastStateFullName];
  370.       if(this.state == classes.game.Guest.STATE_LEAVING || this.state == classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE || this.state == classes.game.Guest.STATE_GOING_TO_TABLE)
  371.       {
  372.          _loc2_.play();
  373.       }
  374.    }
  375.    function setState()
  376.    {
  377.       this.gotoAndStop(this.state);
  378.       this[this.state].head.gotoAndStop("mood_" + this.mood);
  379.       this[this.state].body.gotoAndStop(this.clothes);
  380.       this[this.state].flipper.gotoAndStop(this.clothes);
  381.       this[this.state].flipper_b.gotoAndStop(this.clothes);
  382.       this.lastStateFullName = this.state;
  383.    }
  384.    function setWalkingState()
  385.    {
  386.       var _loc2_ = this.queue.getCoords();
  387.       this._x = _loc2_.x;
  388.       this._y = _loc2_.y;
  389.       var _loc6_ = Math.abs(_loc2_.dx);
  390.       var _loc5_ = Math.abs(_loc2_.dy);
  391.       var _loc4_ = undefined;
  392.       if(_loc6_ + _loc5_ > 0.1)
  393.       {
  394.          if(_loc6_ > _loc5_)
  395.          {
  396.             if(_loc2_.dx > 0)
  397.             {
  398.                _loc4_ = classes.const.Direction.RIGHT;
  399.             }
  400.             else
  401.             {
  402.                _loc4_ = classes.const.Direction.LEFT;
  403.             }
  404.          }
  405.          else if(_loc2_.dy > 0)
  406.          {
  407.             _loc4_ = classes.const.Direction.DOWN;
  408.          }
  409.          else
  410.          {
  411.             _loc4_ = classes.const.Direction.UP;
  412.          }
  413.          var _loc3_ = classes.game.Guest.STATE_WALKING + "_" + _loc4_;
  414.          this.gotoAndStop(_loc3_);
  415.          this[_loc3_].body.gotoAndStop(this.clothes);
  416.          this[_loc3_].flipper.gotoAndStop(this.clothes);
  417.          this[_loc3_].flipper_b.gotoAndStop(this.clothes);
  418.          this.lastStateFullName = _loc3_;
  419.       }
  420.       return _loc2_.end;
  421.    }
  422.    function addEventListener(eventType, scope, functionName)
  423.    {
  424.    }
  425.    function removeEventListener(eventType, scope, functionName)
  426.    {
  427.    }
  428.    function dispatchEvent(event)
  429.    {
  430.    }
  431. }
  432.